package cn.tedu.service.port;

import cn.tedu.entity.Address;
import cn.tedu.service.ex.SiteNotFoundExcption;
import cn.tedu.service.ex.UserNotFoundException;

import java.util.List;

public interface AddressService {

    /**
     * 新增收货地址
     * @param address   信息对象
     * @return  成功返回插入地址的id
     */
    Integer add(Address address) throws UserNotFoundException,SiteNotFoundExcption;

    /**
     * 根据uid查询添加后的地址信息
     * @param uid   uid信息
     * @return  成功返回address地址集合
     * @throws SiteNotFoundExcption 自定义地址信息异常
     */
    List<Address> selectAddress(Integer uid);

    /**
     * 根据id 删除对应地址信息
     * @param id    address地址信息id
     * @param uid   用户id
     * @throws SiteNotFoundExcption 自定义地址信息异常
     */
    void deleteAddress(Integer id, Integer uid) throws SiteNotFoundExcption;

    /**
     * 根据id 修改对应地址信息
     * @param address   地址信息对象
     * @return  返回受影响行数
     */
    Integer updateAddress(Address address, Integer id, Integer uid);

    /**
     * 根据id查询address地址对象
     * @param id    用户地址id
     * @param uid   用户id
     * @return  返回address地址对象
     */
    Address getAddressByIdAndUid(Integer id, Integer uid);

    /**
     * 根据用户uid和该地址id将选中地址状态设置为默认，并将未选中地址取消默认状态
     * @param uid   用户id
     * @param id    选中地址id
     * @return  成功修改返回1，失败返回0
     */
    Integer setDefault(Integer uid, Integer id)throws SiteNotFoundExcption;



}
